It is often quite useful to store the contents of a data stream for later retrieval. A well-known example is streaming audio data that is stored to a recording medium for playback at a later time.
Some situations require that multiple related data streams be recorded simultaneously but in separate data files. If the data streams are related, it is often desirable that the data streams be correlated. That is, given a position or data point in the first data stream, it is often useful to know the corresponding location of related data in the second data stream.
One application potentially requiring correlated data streams involves the recording of certain audio-video data. Generally, the contents of a video data stream must be correlated to an audio data stream. When these data streams are correlated as mentioned, it is possible to playback a selected section of video data along with the corresponding audio portion of such a recording.
An example of an application that correlates streams of events is SYSLOGD, which is a UNIX utility application that logs events from multiple sources in a central file based on time-stamps. According to the principles of SYSLOGD, messages received from multiple event streams are stored with corresponding time-stamps in a central file system.
In the SYSLOGD application, storage of event records, each consisting of an event such as a received message and a corresponding time-stamp, is typically sufficient to establish a relationship between events occurring on two or more distributed computer systems. For example, a message received in one event stream can be correlated to an event in another event stream by traversing a list of time-stamps and retrieving messages having time-stamps of nearly the same time.
While event logging systems such as SYSLOGD are useful for tasks such as computer system administration, they are generally not adequate for correlating streams of data including audio or video frames.